﻿Imports Persistencia
Public Class relVisitas
    Inherits relPadrao

#Region "Variáveis"
    Private objVisitas As New perVisitas
    Private iIdCliente As Int32
    Private iIdRegiao As Int32
    Private dtDataInicio As Date
    Private dtDataFim As Date
    Private sCliente As String
    Private bModeloAnalitico As Byte
    Private sNomeRegiao As String
#End Region

#Region "Enumerações"
    Public Enum eModeloRelatorioVisitas
        eCompleto = 0
        eAnalitico = 1
        eFormulario = 2
    End Enum
#End Region

#Region "Propriedades"

    Public Property ModeloAnalitico() As Byte
        Get
            Return Me.bModeloAnalitico
        End Get
        Set(ByVal value As Byte)
            Me.bModeloAnalitico = value
        End Set
    End Property

    Public Property NomeCliente() As String
        Get
            Return Me.sCliente
        End Get
        Set(ByVal value As String)
            Me.sCliente = value
        End Set
    End Property

    Public Property NomeRegiao() As String
        Get
            Return Me.snomeregiao
        End Get
        Set(ByVal value As String)
            Me.snomeregiao = value
        End Set
    End Property

    Public Property IDCliente() As Int32
        Get
            Return Me.iIdCliente
        End Get
        Set(ByVal value As Int32)
            Me.iIdCliente = value
        End Set
    End Property

    Public Property IDRegiao() As Int32
        Get
            Return Me.iIdRegiao
        End Get
        Set(ByVal value As Int32)
            Me.iIdRegiao = value
        End Set
    End Property

    Public Property DataInicio() As Date
        Get
            Return Me.dtDataInicio
        End Get
        Set(ByVal value As Date)
            Me.dtDataInicio = value
        End Set
    End Property

    Public Property DataFim() As Date
        Get
            Return Me.dtDataFim
        End Get
        Set(ByVal value As Date)
            Me.dtDataFim = value
        End Set
    End Property

#End Region

#Region "Métodos privados"

    Private Sub relClientes_carregaDados(ByRef dsRPT As Object) Handles Me.carregaDados

        Dim dsVisitas As New dsVisitas
        Dim drVisitas As dsVisitas.VisitasRow
        Dim dsDados As New DataSet
        Dim drDados As DataRow

        Try
            dsDados = Me.objVisitas.VisitasPorPeriodo(Me.DataInicio, _
                                                      Me.DataFim, _
                                                      Me.IDCliente, _
                                                      Me.IDRegiao, _
                                                      0, 0, False)

            If Not dsDados Is Nothing AndAlso dsDados.Tables("DC_CadVisitas").Rows.Count > 0 Then
                For Each drDados In dsDados.Tables("DC_CadVisitas").Rows
                    drVisitas = DirectCast(dsRPT, dsVisitas).Visitas.NewVisitasRow
                    With drVisitas
                        .Cliente = perConversao.ToInt32(drDados.Item("IDCliente")) _
                                   & "-" & perConversao.ToString(drDados.Item("RazaoSocial"))
                        .Telefone = perConversao.ToString(drDados.Item("Telefone"))
                        .Endereco = perConversao.ToString(drDados.Item("Endereco"))
                        .Bairro = perConversao.ToString(drDados.Item("Bairro"))
                        .Estado = perConversao.ToString(drDados.Item("Estado"))
                        .Cidade = perConversao.ToString(drDados.Item("Cidade"))
                        .CEP = perConversao.ToString(drDados.Item("CEP"))
                        .Contato = perConversao.ToInt32(drDados.Item("IDContato")) _
                                   & "-" & perConversao.ToString(drDados.Item("NomeContato"))
                        .Regiao = perConversao.ToString(drDados.Item("Regiao"))
                        .Data = perConversao.ToDateTime(drDados.Item("DataVisita"))
                        .Hora = perConversao.ToDateTime(drDados.Item("HoraVisita"))
                        .Observacoes = perConversao.ToString(drDados.Item("ObservacoesVisitas"))
                    End With
                    DirectCast(dsRPT, dsVisitas).Visitas.AddVisitasRow(drVisitas)
                Next
            End If

        Catch ex As Exception
            Throw New Exception("Exceção no método 'carregaDados'. " & Environment.NewLine & Environment.NewLine & ex.Message)
        End Try

    End Sub

    Private Sub relClientes_carregaFormulas(ByRef crRPT As Object) Handles Me.carregaFormulas

        Dim sSubTitulo As String = ""

        If (Me.IDCliente <> 0) Then
            sSubTitulo &= "Cliente: " & Me.sCliente
        Else
            sSubTitulo &= "Cliente: todos"
        End If
        sSubTitulo &= "".PadLeft(3)

        If (Me.IDRegiao <> 0) Then
            sSubTitulo &= "Região: " & Me.sNomeRegiao
        Else
            sSubTitulo &= "Região: todas"
        End If
        sSubTitulo &= "".PadLeft(3)

        If (Me.DataInicio <> Date.MinValue) Then
            sSubTitulo &= "Data início: " & Me.DataInicio
        Else
            sSubTitulo &= "Data início: todas"
        End If
        sSubTitulo &= "".PadLeft(3)

        If (Me.DataFim <> Date.MaxValue) Then
            sSubTitulo &= "Data fim: " & Me.DataFim
        Else
            sSubTitulo &= "Data fim: todas"
        End If

        With crRPT.DataDefinition.formulaFields
            If (Me.ModeloAnalitico <> eModeloRelatorioVisitas.eFormulario) Then
                .item("ModeloAnalitico").text = (Me.ModeloAnalitico = eModeloRelatorioVisitas.eAnalitico)
            End If
            .item("SubTitulo").text = "'" & sSubTitulo & "'"
        End With

    End Sub

#End Region

#Region "Métodos públicos"

    Public Function imprime(ByVal byDispositivoSaida As eDispositivoSaida) As Boolean
        Dim dsRPT As DataSet
        Dim crRPT As CrystalDecisions.CrystalReports.Engine.ReportClass
        Dim bProcesso As Boolean = False

        Try
            dsRPT = New dsVisitas
            If (ModeloAnalitico = eModeloRelatorioVisitas.eFormulario) Then
                crRPT = New rptVisitasForm
            Else
                crRPT = New rptVisitas
            End If

            crRPT.SummaryInfo.ReportTitle = "Visitas"

            bProcesso = objRelatorio.processa(byDispositivoSaida = eDispositivoSaida.impressora, dsRPT, crRPT)

            Return bProcesso
        Catch ex As Exception
            Throw New Exception("Exceção no método 'imprime'. " & Environment.NewLine & Environment.NewLine & ex.Message)
        End Try

    End Function

#End Region
End Class
